約 4,518,195 件
https://w.atwiki.jp/20101709/pages/40.html
OpenCVとは、Intelによって開発された、画像認識に関連する機能のライブラリのことである。 OpenCVは、コンピュータビジョンと呼ばれる、画像認識・解析に関するコンピューティング技術が主な用途として想定されている。C言語、C++によって記述することが可能であり、WindowsやLinuxなど複数のプラットフォームに対応している。BSDライセンスに基づくオープンソースソフトウェア(OSS)として提供されているため、誰でも無償で利用することができる。 OpenCVを用いることによって、例えば物体の認識、パターン認識、動作の認識といった、コンピュータビジョンに関する高度な画像処理機能を容易に利用できるようになる。 OpenCVは米国のSourceForge.netなどでダウンロード可能である。日本ではopencv.jpのWebサイト上でリファレンスマニュアルの製作・公開が行われている。 参照リンク Open Source Computer Vision Library - (英文) opencv.jp IT用語辞典
https://w.atwiki.jp/ppnlab/pages/16.html
最終更新:2013年07月05日 (金) 09時00分32秒 ここではOpenCVのビルドに関するメモをまとめます。 ここに書かれていることを行いなにか問題があっても責任はとれません。くれぐれも自己責任でお願いいたします。個人的な意見・間違いも多いと思います。アドバイスされると喜びます( ・ω・*) ※ VaioZに最新NVIDIA(最新CUDA)を非正規導入するのはお勧めしません。ディスプレイのバックライト輝度を調節できなくなり,目が辛いです。 追記・メモ等(読み飛ばしてください) ・ ・ ・ ■はじめに 公式のドキュメントより抜粋 OpenCV may come in multiple flavors. There is a “core” section that will work on its own. Nevertheless, there is a couple of tools, libraries made by 3rd parties that offer services of which the OpenCV may take advantage. These will improve its capabilities in many ways. In order to use any of them, you need to download and install them on your system. Installation in Windows — OpenCV 2.4.5.0 documentation OpenCVはビルド済みのものが配布されており,それにより比較的簡単な準備でGUI,カメラ,顔検出,その他画像処理を行うことが可能です。 自分でビルドすることで3rdパーティーによる恩恵が受けられます。3rdパーティによるライブラリはダウンロードおよびインストールする必要があります。ものによってはビルドの必要があり,割と手間です。 残念ながら,どれだけアドバンテージがあるのか試してません。 !!追加予定 Face Detect等簡単なもので比べる。 ■3rdパーティーのライブラリ 公式で説明されている主なライブラリは次のもの。 python, Numpy, TBB, IPP(有料), Qt, Eigen, CUDA, OpenEXR, OpenNI, Miktex, Sphinx とりあえずパフォーマンスに貢献するCUDA, TBBを入れておけばいいんじゃないでしょうか。 !!追加予定 訳?と+αの説明, 必要性。こんなかんじ TBB, CUDAが一番重要そうです。マルチスレッド,GPUのものです? pythonを使うならpython, numpyも。 numpy, eigen等のライブラリがどう役立つのかわかってません。 QtはGUIを高機能?にしますが,個人的には今のところ不要です。 OpenEXRは今ここでは無視。追加予定です。そのうち使ってみたいです。 Miktexはwindows,SphinxはpythonでOpenCvのドキュメントを作成するためのものです。 OpenNIはOpenCVで用意されているOpenNI関連の関数を使いたい場合に。OpenNI2にバージョンが変わったので,2次配布されているものを拾ってきます。OpenNIとOpenNI2はおそらく共存できず互換性もないので,あきらめてOpenNI2はOpenNI2で使った方がいいかもしれません。 ■ビルド環境 ビルドは次の環境で試しました。 MSVC 2008/2010 EE 32bit/64bit ※ 2008 EE 64bit はコマンドプロンプトコンパイラによるOpenCVビルドの所で失敗したままです。 ※ビルドする際の注意点 OpenCVライブラリを利用する環境と次をビルドする環境は合わせましょう。 OpenCVライブラリ 3rdパーティのライブラリ ビルドする環境によってその環境用のdll等が生成されます。例えばMSVC 2008,32bitでライブラリをビルドした場合,そのライブラリはMSVC 2008,32bitでのみ利用できます。これに関して,Express Editionかどうかは問題じゃなさそうです。 これは3rdパーティーのライブラリも同様です。それらを自分でビルドしなければならない際は,OpenCVを利用する環境に合わせてビルドしましょう。 ■注意等 OpenCVを「ビルドする時」と「利用する時」のMSVCのバージョン,ビット数は合わせましょう。 また,3rdパーティのライブラリをMSVCでビルドする必要がある場合,こちらも合わせましょう。 Qtをビルドした際,その結果のファイルパスが記憶されるようで,フォルダ位置を変更するとおかしくなりました。 OpenNIがOpenNI2になってしまった 旧ver. 再配布を拾ってくる。もしくはあきらめて,OpenNI2はOpenNI2で使う。 3rdパーティによりどれくらい良くなるか比較していません。 NotePCではNVIDIAドライバを更新しづらくCUDA導入は手間です。特にVaio Zで最新CUDAを利用する場合,NVIDIAドライバを更新しなければなりません。その際にBIOSの書き換えが必要で,ディスプレイの輝度がいじれなくなります。まぶしいのでおすすめしません。 ■OpenCVのビルド OpenCVのビルドに最低限必要なもの 最低限必要なものは3つ ・OpenCV ソースファイル ・CMake ・Microsoft Visual Studio C++ 2008/2010 Express Edition(略:msvc) CMakeはビルド設定をサポートしてくれます。パスの設定や,どの3rdパーティーのライブラリを追加するのか,テストプログラムはコンパイルするかなどの設定をGUIで行えます。設定後,MSVCでビルド可能なようにソリューション以下プロジェクト等を生成してくれます。 ※ MSVC2008でOpenCVを利用する場合は,MSVC2008でOpenCVをビルドしてください。 32bitビルドと64bitビルド 実際,64bitの方が速いのでしょうか。 少なくともpythonは32bitだけでよさそうです。 → リンク挿入 3rdパーティーのライブラリ 3rdパーティーのライブラリには予めビルドしなければならないものと,OpenCVビルドの際に一緒にビルドされるものがあります。 OpenCVをビルドする際に何か問題が出た場合,一旦除外したうえでビルドが通るか試すといいです。OpenCVのコアが上手くビルドされることを確認したうえで,3rdパーティーのライブラリを追加してゆく方が問題に専念しやすいです。 また,先行までで示したようにビルドのパターンはMSVCのバージョンで2パターン,ビット数で2パターン,計4パターンあります。 予めMSVCでビルドしなければならないものは,OpenCVをビルドする際のパターンと合わせましょう。 OpenCVのビルドにはどちらのバージョンを使い何ビットでコンパイルするのかに注意して,3rdパーティの準備を行いましょう, ■繰り返しになりますが,OpenCVの使用/ビルドに当たっての注意点 開発環境(MSVC)と依存ファイル(OpenCV等)のバージョンを合わせる ビルド済みで配布されているものを解凍すると,次のようなフォルダ構成が見られます. 32/64bitで分けられているだけでなく,vc9/10でも分けられています. ※ vc9はMSVC2008, vc10はMSVC2010です. opencv build x86 vc9 bin, lib, staticlib (フォルダ) opencv build x86 vc10 bin, lib, staticlib opencv build x64 vc9 bin, lib, staticlib opencv build x64 vc10 bin, lib, staticlib なぜ分けられているかというと,おそらくOpenCVライブラリを使ったプログラムをどちらでコンパイル/ビルドするかで,使いわけなけらばならないからです. 実際,MSVCのバージョンを合わせなかったところ,引数が正しく渡されませんでした(stringポインタが不正な値になりました).もちろん,私の知識が乏しいので,他の問題が根本的な原因が見つけられなかったのかもしれませんが. OpenCVをビルドする際の注意 また,OpenCV自体をビルドする際にも注意しなければなりません. 1. OpenCVをmsvc2008でビルドした場合,自作プログラムをコンパイル/ビルドするのはmsvc2008である必要があるのは先ほどと同じことです. 2. 問題はQt等を自分でビルドし,OpenCVビルド時に使用する場合です.QtをビルドするMSVCのバージョンとOpenCVをビルドするMSVCのバージョンは合わせなければなりません. いわずもがなですが,ビルド時のパターンは全部で4つです 32bit/MSVC2008 64bit/MSVC2008 32bit/MSVC2010 64bit/MSVC2010
https://w.atwiki.jp/acti-on/pages/17.html
参考書籍やURLがあればこちらに載せてください。 openCV1.0 リファレンス 廣瀬さん勉強会資料_1 廣瀬さん勉強会資料_2 前期のソース(要FlexBuilder) [ネットワーク] TCP_echo サーバ TCP_echo クライアント UDP_echo サーバ UDP_echo クライアント ネットワークプログラミング(1) ネットワークプログラミング(2) ネットワークプログラミング(3) ネットワークプログラミング(4) ネットワークプログラミング(5) [GUI] Liliy(C++ GUI ライブラリ) [OpenCVを使ったサンプルプログラム] 顔認識 faceDetect.cpp 解説pptx 形状特徴抽出 Labeling.h LabelingW.h main.cpp(ファイル名異なるので注意) 解説pptx 背景差分 background_subtraction.cpp single_gaussian.cpp(正規分布モデルを用いた背景差分法) エッジ抽出 edge_extraction_movie.cpp edge_extraction_picture.cpp(image-source.bmpという画像が必要) 画面上に描画したボールを投げる/取る Labeling.h LabelingW.h ball.cpp 手の動きに合わせて線を描く lineDrawer.cpp [processing] marshmallow_40.pde 画面の左から右にパンチをすると、「パンチ!!」と表示される punch.cpp Labeling.h LabelingW.h ハンドアウト handout.pdf [A班] 背景差分+手認識 lineDrawer5.cpp [B班] ユーザー名 mario パスワード real
https://w.atwiki.jp/ppnlab/pages/26.html
◆PATHの設定 インクルード・ライブラリのパス MSVCにパスを追加します。 ビルド済みのもの(x86,vc11の部分は場合に合わせて読み替えてください) OpenCVルートディレクトリ/build/include OpenCVルートディレクトリ/x86/vc11/lib 自分でビルドした場合 OpenCVルートディレクトリ/install/include OpenCVルートディレクトリ/lib/ dllファイルのパス 環境変数にパスを設定します。 ユーザーの環境変数に設定すれば再ログイン/再起動の必要がありません(システム環境変数も同じ?)。 区切りはセミコロン[;]です。この時,セミコロン直後に半角スペースを入れてはいけません。 ビルド済みのもの OpenCVルートディレクトリ/x86/vc11/bin 自分でビルドした場合 OpenCVルートディレクトリ/bin
https://w.atwiki.jp/arprojectfun/pages/48.html
OpenCV OpenCVに関する記事のまとめ OpenCVの導入 OpenCVを使ったWebカメラの扱い方 カメラの画像をテクスチャに利用する OpenCV+DirectXでのプログラミング
https://w.atwiki.jp/shiitakeo/pages/26.html
ver.2.1のインストール OnCV@千原Lab. - OpenCV2.0インストールガイド http //chihara.naist.jp/opencv/?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB#v404b392 基本的にはここのとおり.リンカで記述するファイル名が"~200.lib"から"~210.lib"になることを注意.ここではCmakeで,VS2008というディレクトリをCV2.1ディレクトリの直下に作っている. リンカ (デバッグ時) [cv210d.lib cxcore210d.lib cvaux210d.lib highgui210d.lib] (リリース時) [cv200.lib cxcore200.lib cvaux200.lib highgui200.lib] ツール - オプション - VC++ディレクトリ - インクルードファイル C \OpenCV2.1\src\cv //これはいらないかも? C \OpenCV2.1\include\opencv C \OpenCV2.1\include - ライブラリファイル C \OpenCV2.1 C \OpenCV2.1\lib C \OpenCV2.1\VS2008\lib\Release C \OpenCV2.1\VS2008\lib\Debug プログラム中で記述. "C \\OpenCV2.1\\include\\opencv\\highgui.h" "C \\OpenCV2.1\\include\\opencv\\cv.h" "C \\OpenCV2.1\\include\\opencv\\cxcore.h" 動作チェック OpenCV2.1/samples/cにあるedge.exeを実行してみる. カメラがないと動かないものが多いが,これはなくてもいける. フルーツの写真のエッジ検出的な的な的な.
https://w.atwiki.jp/cglab/pages/14.html
インテルが公開している画像処理ライブラリopenCVに関する情報 OpenCV-1.1pre リファレンス マニュアル(日本語訳) http //opencv.jp/opencv-1.1.0/document/index.html
https://w.atwiki.jp/yahirohumpty/pages/25.html
以下の記述は古い可能性があるので常に最新の情報を参照してください. http //docs.opencv.org/modules/features2d/doc/features2d.html SIFTに端を発する特徴点ベースのマッチング手法について. OpenCVの実装では特徴点抽出,特徴量計算,対応点探索をそれぞれ好きなのを使える. なお,Fernはこのフレームワークに収まらないため別の実装になる. 特徴点抽出 http //docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html 特徴点抽出では FeatureDetectorという基底クラスを元にしている. FeatureDetector create()に文字列を与えて色々作れる. "FAST" "STAR" "SIFT" "SURF" "ORB" "BRISK" "MSER" "GFTT" "HARRIS" "Dense" "SimpleBlob" が使える.また"Grid...","Pyramid..."と接頭辞を付け加えると それぞれ格子状に区切った範囲,ピラミッド画像に適用したものにすることができる. 特徴量計算 http //docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_extractors.html 特徴量計算も同様に DescriptorExtractorという基底クラスを元にしている. DescriptorExtractor create()では "SIFT" "SURF" "ORB" "BRISK" "BRIEF" が使える.また"Opponent..."とするとOpponent色空間に適用することができ, 記述子の次元が三倍になる. 2.4.2以降ではFREAKという記述子が使えるようになっているが, create()では作れない.cv FREAKを直接作る. 対応点探索 http //docs.opencv.org/modules/features2d/doc/common_interfaces_of_descriptor_matchers.html 対応点探索もやはりDescriptorMatcherという基底クラスがあり, DescriptorMatcher create()では BruteForce (it uses L2 ) BruteForce-L1 BruteForce-Hamming BruteForce-Hamming(2) FlannBased が選べる. 対応点探索における注意点として, 記述子間の距離を計算するときにユークリッド距離かハミング距離かを考えなければいけない. SIFTなどはユークリッド距離だが BRIEF,ORB,FREAKなどはバイナリ記述子なのでハミング距離になる. これがFlannBasedMatcherで例外を引き起こす原因になる. http //stackoverflow.com/questions/8065822/using-keypoints-to-compute-object-similarities Note that SIFT requires an euclidean-distance-based matcher (FLANN), but FREAK or other binary descriptors require a hamming-distance-based matcher. http //code.opencv.org/issues/1947 The LinearIndexParams and the small data set were just an simple example to demonstrate the problem. I actually want to use the KDTreeIndexParams on large data sets with about 10^6 * 128 uchar values. The KDTreeIndexParams work fine on float data but fail when trying to use uchar data. I want to emphasize again that the documentation of the original FLANN library states that uchar is supported. どちらに該当するかは記述子を格納している行列のtype()で判定可能. http //code.google.com/p/find-object/ CV_8Uであれば,バイナリ記述子であるためLshIndexParamsを利用する. 引数は三つのintで, 前からテーブルサイズ,キーのビット数,隣接バケットチェックのためのビットシフト桁数. http //docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html
https://w.atwiki.jp/hwiki/pages/18.html
インストールWindows+VC2008 Linux AVIファイルが読み込めない場合 Linuxでpngやjpegが読み込めないとき カメラキャリブレーション F行列とE行列の推定 インストール Windows+VC2008 Linux AVIファイルが読み込めない場合 cvCreateFileCapture()がNULLを返す場合は, コーデックが入ってない可能性がある. この場合, エンコードされてない(全フレームを格納する)生データにすることで読み込むことができる場合がある. 以下, FFmpegでの方法. ffmpeg -i hogehoge.avi -vcodec rawvideo hogehoge.avi Linuxでpngやjpegが読み込めないとき 使ってるディストリで用意されているlibpngのパッケージのバージョンが古くて, リポジトリから取ってきてビルドしたOpenCV使ったらpngが読めなかった(ちなみにリビジョンは4167). OpenCVにはlibpngとかのソースが付属してるので, そういうときはOPENCV_BUILD_3RDPARTY_LIBSっていうCMake環境変数をTRUEにしてMakefileを構築してインストすると楽. カメラキャリブレーション F行列とE行列の推定 FindFundamentalMat()でF行列推定できるんだけど, ランクが2でない時がある. 推定したF行列を特異値分解して最小特異値を0とおいて再合成したものを使った方がいい(内部でやってくれればいいのに…). ちなみに, cvCalibrateCamera2()で求めた内部行列とFindFundamentalMat()で求めてランク2にしたF行列でE行列計算してみても, 特異値2つが同じゃない. 線形解法じゃ限界があるのか, バグか. しらべてみないと. カウンタ -
https://w.atwiki.jp/kai_raku/pages/15.html
OpenCVは資料が全然ないんだよね。だから、僕にとってのノート的な役割になればいいかな。 contens OpenCVとは USBカメラからの画像キャプチャ note